package greddy;

public class _06_45_跳跃游戏Ⅱ {
    public static int jump(int[] nums) {
    	int curIndex = 0;
    	int nextIndex = 0;
    	int count = 0;
    	
    	for(int i = 0; i < nums.length; i++) {
    		// i不断往后移，拿到能获取的最大范围
    		nextIndex = Math.max(nextIndex, i + nums[i]);
    		// 如果i到达当前的最大范围，并且没到达终点
    		// 则拿i前面nextIndex的最大范围作为新的当前范围，并且跳跃次数+1
    		// 得到新的最大范围能到达终点，则结束循环
    		if(i == curIndex && i != nums.length - 1) {
    			curIndex = nextIndex;
    			count++;
    			if(curIndex >= nums.length - 1) break;
    		}

    	}
    	
    	return count;
    }
    
    public static void main(String[] args) {
		int[] nums = {2,3,0,1,4};
		System.out.println(jump(nums));
	}
}
